#!/bin/bash
#========= 脚本调用三种： ===========
#fork	新开一个子 Shell 执行，子 Shell 可以从父 Shell 继承环境变量，但是子 Shell 中的环境变量不会带回给父 Shell。
#用法：/xxx/yyy.sh
#exec	在同一个 Shell 内执行，但是父脚本中 exec 行之后的内容就不会再执行了
#用法：exec /xxx/yyy.sh
#source	在同一个 Shell 中执行，在被调用的脚本中声明的变量和环境变量, 都可以在主脚本中进行获取和使用，相当于合并
#用法：source /xxx/yyy.sh
#===================================
FILE_COUNT=$#
if((FILE_COUNT!=2)); then
    echo ">>> 错误：未传递文件参数！"
    echo "  用法：download_unzip.sh \"folderName\" \"http://xxx.zip\""
    exit;

fi

# 全局变量
WEB_DOWNLOAD_ZIP_URL=$2
# 下载目录
SOFTWARE_PATH=/opt/software
# 安装目录
MODULE_PATH=/opt/module/$1
# 仓库目录
REPO_PATH=/opt/repository/$1
# 文件绝对路径
FILE_PATH="$SOFTWARE_PATH/`basename $WEB_DOWNLOAD_ZIP_URL`"

# 文件后缀(去掉变量var从左边算起的最后一个'/'字符及其左边的内容)
FILE_EXTENSION="${FILE_PATH##*.}"

#===============================================
#             创建软件安装固定目录
#===============================================
function mkSoftDir(){
    if [ ! -e "$SOFTWARE_PATH" ]; then
        mkdir -p $SOFTWARE_PATH
        echo ">>> 下载目录不存在，已经创建$SOFTWARE_PATH"
    fi

    if [ ! -e "$MODULE_PATH" ]; then
        mkdir -p $MODULE_PATH
        echo ">>> 安装目录不存在，已经创建$MODULE_PATH"
    fi

    if [ ! -e "$REPO_PATH" ]; then
        mkdir -p $REPO_PATH
        echo ">>> 仓库目录不存在，已经创建$REPO_PATH"
    fi
}
#===============================================
#                 文件下载
#===============================================
if [ ! -f  $FILE_PATH ]; then
    echo ">>> 文件不存在开始下载..."
    # 创建父目录
    mkSoftDir
    # 下载到指定位置
    wget $WEB_DOWNLOAD_ZIP_URL -P $SOFTWARE_PATH
    echo ">>> 下载路径：$FILE_PATH"
else
    mkSoftDir
    echo ">>> 文件已经存在，不再下载！$FILE_PATH"
fi

#===============================================
#               不同的解压方式
#===============================================
case "$FILE_EXTENSION" in
    "jar")
    # echo ">>> \$FILE_PATH 文件绝对路径：$FILE_PATH"
    ;;
    "zip")
        echo ">>> 开始解压zip"
        if [ ! `command -v unzip` ]; then
            sudo yum -y install unzip
        fi
        #-n 不覆盖 -d 指定解压目录
        unzip -n -d $MODULE_PATH $FILE_PATH
    ;;
    "rpm")
        echo ">> rpm -ivh 开始安装$FILE_PATH"
        rpm -ivh $FILE_PATH
    ;;
    "xz")
        echo ">> tar -xvf 开始安装$FILE_PATH"
        tar -xvf $FILE_PATH -C $MODULE_PATH
    ;;
    "bz2")
        echo ">> tar -jvxf 开始安装$FILE_PATH"
        tar -jvxf $FILE_PATH -C $MODULE_PATH
    ;;
    *)
        echo "使用默认主式解压tar -zxvf"
        tar -zxvf $FILE_PATH -C $MODULE_PATH
    ;;
esac

# 放在最后，解压后路径名(去掉变量var从右边算起的第一个'/'字符及其右边的内容)
File_HOME="$MODULE_PATH/`ls $MODULE_PATH`"

# source 调用本脚本时可用变量。
echo "#============== 调用本脚本时可用变量 =============="
echo "#>>> \$FILE_PATH 文件绝对路径：$FILE_PATH"
echo "#>>> \$FILE_EXTENSION 文件后缀：$FILE_EXTENSION"
echo "#>>> \$File_HOME 软件HOME：$File_HOME"
echo "#>>> \$REPO_PATH 仓库目录：$REPO_PATH"